home *** CD-ROM | disk | FTP | other *** search
- #include <iostream.h>
-
- class rational
- {
- public:
- rational() : num(0), denom(1) { }
- rational(long n, long d = 1) : num(n), denom(d) { }
- rational &operator+=(rational r);
- rational &operator-=(rational r);
- rational &operator*=(rational r);
- rational &operator/=(rational r);
- rational operator+();
- rational operator-();
- double to_double() { return (double)num / denom; }
- friend ostream &operator<<(ostream &os, rational r);
- private:
- long num, denom;
- void simplify();
- };
-
- inline rational rational::operator+() { return *this; }
-
- inline rational operator+(rational r1, rational r2)
- {
- return r1 += r2;
- }
-
- inline rational operator-(rational r1, rational r2)
- {
- return r1 -= r2;
- }
-
- inline rational operator*(rational r1, rational r2)
- {
- return r1 *= r2;
- }
-
- inline rational operator/(rational r1, rational r2)
- {
- return r1 /= r2;
- }
-
- inline rational operator++(rational &r)
- {
- return r += 1;
- }
-
- inline rational operator--(rational &r)
- {
- return r -= 1;
- }
-
- rational operator++(rational &r, int);
- rational operator--(rational &r, int);
-
- istream &operator>>(istream &is, rational &r);
-
-
-